import { defineConfig } from 'umi';
import routes from './routes';

export default defineConfig({
  // routes: [
  //   { path: '/', component: 'index' },
  //   { path: '/docs', component: 'docs' },
  //   { path: '/counter', component: '@/pages/counter/index' },
  //   { path: '/*', component: '@/pages/404.tsx' },
  // ],
  npmClient: 'pnpm',
  // 路由表，从routes.ts引入
  routes,
  // 设置路由类型，有三种分别是browser，hash，memory
  history: {
    type: 'browser',
  },
  // 开启historyWithQuery后，使用history跳转时，可以使用query（即？传参）传参
  historyWithQuery: {},

  //配置代理功能。用于解决跨域请求的问题，下面的配置，当访问/api/users时，实际访问到的是http://jsonplaceholder.typicode.com/users
  proxy: {
    '/api': {
      'target': 'http://jsonplaceholder.typicode.com/',
      'changeOrigin': true,
      'pathRewrite': { '^/api' : '' },
    }
  },

  // 为了扩展 Umi 内置的 webpack 配置
  chainWebpack(memo, { env, webpack }) {
    // 设置 alias
    // memo.resolve.alias.set('foo', '/tmp/to/foo');

    // 添加额外插件
    // memo.plugin('hello').use(Plugin, [...args]);

    // 删除 Umi 内置插件
    // memo.plugins.delete('hmr');
  },

  // 设置哪些模块不打包，转而通过 <script> 或其他方式引入，通常需要搭配 headScripts 配置使用。
  externals: {},

  // 开发环境有sourcemap，非开发环境关闭sourcemap
  devtool: process.env.NODE_ENV === 'development' ? 'eval' : false,
  
  // 开启 hash 模式，让 build 之后的产物包含 hash 后缀。通常用于增量发布和避免浏览器加载缓存。
  hash: true,

  // 配置图片文件是否走 base64 编译的阈值。小于10k时编译为base64，大于10k时编译为文件引用。
  inlineLimit: 10000,

  // 配置构建时压缩 JavaScript 的工具, none表示不压缩
  jsMinifier: 'esbuild',
  // jsMinifier 的配置项；默认情况下压缩代码会移除代码中的注释，可以通过对应的 jsMinifier 选项来保留注释。
  jsMinifierOptions: {},

  // 配置额外的 Umi 插件。数组项为指向插件的路径，可以是 npm 依赖、相对路径或绝对路径。如果是相对路径，则会从项目根目录开始找。
  plugins: [],

  // 配置打包后静态资源的导入根路径。默认是/
  publicPath: process.env.NODE_ENV === 'development' ? '/' : '/abc',

  // 配置全局页面 title，暂时只支持静态的 Title。
  title: '马路123',

  // 解决浏览器兼容性问题，设置按需引入的 polyfill。默认全量引入ES6+中的API兼容。
  polyfill: {},

  //配置需要兼容的浏览器最低版本。Umi 会根据这个自定引入 polyfill、配置 autoprefixer 和做语法转换等。
  target: {ie: 11,}
});
